import { FuelType, ExpenseType, RepairType, MaintenanceType } from '@/types';

// 基础表单数据接口
export interface BaseFormData {
  id?: string;
  amount: number;
  date: string;
  description?: string;
  location?: string;
  mileage?: number;
}

// 加油表单数据接口
export interface FuelFormData extends BaseFormData {
  type: ExpenseType.FUEL;
  fuelType: FuelType;
  fuelAmount: number; // 加油升数
  fuelPrice: number; // 油价
  isFullTank: boolean; // 是否加满
  isLowFuel: boolean; // 是否低油量提醒
}

// 维修表单数据接口
export interface RepairFormData extends BaseFormData {
  type: ExpenseType.REPAIR;
  repairType: RepairType; // 维修类型
  isEmergency: boolean; // 是否紧急维修
  isWarranty: boolean; // 是否保修期内
  repairItems?: string; // 维修项目
  laborCost?: number; // 工时费
  partsCost?: number; // 配件费
  workshop?: string; // 维修厂
}

// 保养表单数据接口
export interface MaintenanceFormData extends BaseFormData {
  type: ExpenseType.MAINTENANCE;
  maintenanceType: MaintenanceType; // 保养类型
  isRegularService: boolean; // 是否定期保养
  isEmergencyService: boolean; // 是否紧急保养
  serviceItems?: string; // 保养项目
  laborCost?: number; // 工时费
  partsCost?: number; // 配件费
  workshop?: string; // 保养厂
  nextServiceMileage?: number; // 下次保养里程
}

// 洗车表单数据接口
export interface CarWashFormData extends BaseFormData {
  type: 'car_wash';
  washType: string; // 洗车类型
  interiorCleaning: boolean; // 是否内饰清洁
  waxing: boolean; // 是否打蜡
  polishing: boolean; // 是否抛光
  washLocation?: string; // 洗车地点
}

// 表单组件属性接口
export interface FormProps<T extends BaseFormData> {
  initialData?: Partial<T>;
  onSubmit: (data: T) => void;
  onCancel?: () => void;
}
